home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Small Eiffel 0.4.8 / lib_std / link.e < prev    next >
Encoding:
Text File  |  1997-04-13  |  1.2 KB  |  81 lines  |  [TEXT/ttxt]

  1. -- Part of SmallEiffel -- Read DISCLAIMER file -- Copyright (C) 
  2. -- Dominique COLNET and Suzanne COLLIN -- colnet@loria.fr
  3. --
  4. class LINK[E]
  5.    --
  6.    -- To implement LINKED_COLLECTION[E] (see LINK_LIST[E} and 
  7.    -- LINK2_LIST[E]).
  8.    --
  9.  
  10. creation {LINKED_COLLECTION}
  11.    make
  12.  
  13. feature {LINKED_COLLECTION,LINK}
  14.    
  15.    item: E;
  16.  
  17.    next: like Current;
  18.  
  19. feature {LINKED_COLLECTION}
  20.  
  21.    make(i: like item; n: like next) is
  22.       do
  23.      item := i;
  24.      next := n;
  25.       ensure
  26.      item = i;
  27.      next = n
  28.       end;
  29.    
  30. feature {LINKED_COLLECTION,LINK}
  31.  
  32.    set_item(i: like item) is
  33.       do
  34.      item := i;
  35.       ensure
  36.      item = i
  37.       end;
  38.  
  39.    set_next(n: like next) is
  40.       do
  41.      next := n;
  42.       ensure
  43.      next = n
  44.       end;
  45.  
  46.    set_all_with(v: like item) is
  47.       local
  48.      lnk: like Current;
  49.       do
  50.      from
  51.         lnk := Current;
  52.      until
  53.         lnk = Void
  54.      loop
  55.         lnk.set_item(v);
  56.         lnk := lnk.next;
  57.      end;
  58.       end;
  59.  
  60. feature {LINKED_COLLECTION} -- The Guru section :
  61.  
  62.    free is
  63.       local
  64.      p1, p2: like Current;
  65.      mem: MEMORY;
  66.       do
  67.      from
  68.         p1 := next;
  69.      until
  70.         p1 = Void
  71.      loop
  72.         p2 := p1;
  73.         p1 := p1.next;
  74.         mem.free(p2.to_pointer);
  75.      end;
  76.      mem.free(Current.to_pointer);
  77.       end;
  78.  
  79. end -- LINK[E]
  80.  
  81.